package com.jssrc.resample; import org.testng.annotations.Test; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import java.io.File; /** * JSSRCResampler Tester. * * @author Maksim Khadkevich * @since <pre>03/25/2011</pre> * @version 1.0 */ public class JSSRCResamplerTest { /** * * This simple test downsamples and upsamples two test files * */ @Test public void testReadSamples() throws Exception { String[] fileNames = new String[]{"/mono_short_test.wav", "/stereo_long_test.wav"}; float[] outSamplingRates = new float[]{11025f, 96000f}; for (String inFileName:fileNames) { for (float outSamplingRate:outSamplingRates) { String inFilePath = this.getClass().getResource(inFileName).getPath(); AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(inFilePath)); AudioFormat sourceFormat = audioInputStream.getFormat(); AudioFormat targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, outSamplingRate, sourceFormat.getSampleSizeInBits(), sourceFormat.getChannels(), sourceFormat.getFrameSize(), sourceFormat.getFrameRate(), sourceFormat.isBigEndian()); AudioInputStream inputStream = AudioSystem.getAudioInputStream(targetFormat, audioInputStream); AudioSystem.write(inputStream, AudioFileFormat.Type.WAVE, new File(String.format("%s_resampled_%d.wav", inFilePath, (int) outSamplingRate))); } } } }